var eventproxy=require('eventproxy');
var ep=new eventproxy();

function mockGet(cb){
    setTimeout(function () {
        //console.log('网络请求...');
        if(Math.random()<0.3){
            cb(null,'网络请求');
        }else{
            cb({msg:'网络请求错误'});
        }
    },Math.random()*1000|0);
}

function mockRead(cb){
    setTimeout(function () {
        //console.log('读取文件...');
        if(Math.random()<0.3){
            cb(null,'读取文件');
        }else{
            cb({msg:'读取文件错误'});
        }
    },Math.random()*1000|0);
}

function mockQuery(cb){
    setTimeout(function () {
        //console.log('查询数据库...');
        if(Math.random()<0.5){
            cb(null,'查询数据库');
        }else{
            cb({msg:'查询数据库错误'});
        }
    },Math.random()*1000|0);
}

//--------------------------------
//done([cb(data)]):进一步处理数据，并剔除第一个Error对象，当发生错误时，会自动调用注册的错误回调函数
ep.all('get','read','query', function (data1, data2, data3) {
    console.log('data1:',data1);
    console.log('data2:',data2);
    console.log('data3:',data3);
});

ep.on('error', function (err) {
    console.log('error:',err);
});

mockGet(ep.done('get', function (data) {
    return data.split('');
}));

mockRead(ep.done('read', function (data) {
    return data.split('');
}));

mockQuery(ep.done('query', function (data) {
    return data.split('');
}));



